package com.example.yin.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.yin.common.R;
import com.example.yin.mapper.ListSongMapper;
import com.example.yin.model.domain.ListSong;
import com.example.yin.model.request.ListSongRequest;
import com.example.yin.service.ListSongService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//ListSongServiceImpl的服务类实现。它继承自ServiceImpl<ListSongMapper,ListSong>类，并实现了ListSongService接口
@Service
public class ListSongServiceImpl extends ServiceImpl<ListSongMapper, ListSong> implements ListSongService {

    @Autowired
    private ListSongMapper listSongMapper;

    //查询歌单所有歌曲信息
    @Override
    public List<ListSong> allListSong() {
        return listSongMapper.selectList(null);
    }

    //更新歌单歌曲信息
    @Override
    public R updateListSongMsg(ListSongRequest updateListSongRequest) {
        ListSong listSong = new ListSong();
        BeanUtils.copyProperties(updateListSongRequest, listSong);
        if (listSongMapper.updateById(listSong) > 0) {      //判断updateById方法的返回值是否大于0
            return R.success("修改成功");                    //若是，返回一个表示成功的R对象，其中包含修改成功消息
        } else {
            return R.error("修改失败");                      //否则，返回一个表示失败的R对象，其中包含修改失败消息
        }
    }

    //删除歌单中的歌曲
    @Override
    public R deleteListSong(Integer songId) {
        QueryWrapper<ListSong> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("song_id",songId);
        if (listSongMapper.delete(queryWrapper) > 0) {       //判断delete方法的返回值是否大于0
            return R.success("删除成功");                     //若是，返回一个表示成功的R对象，其中包含删除成功消息
        } else {
            return R.error("删除失败");                       //否则，返回一个表示成功的R对象，其中包含删除失败消息
        }
    }

    //添加歌单中的歌曲
    @Override
    public R addListSong(ListSongRequest addListSongRequest) {
        ListSong listSong = new ListSong();
        BeanUtils.copyProperties(addListSongRequest, listSong);
        if (listSongMapper.insert(listSong) > 0) {      //判断insert方法的返回值是否大于0
            return R.success("添加成功");                //若是，返回一个表示成功的R对象，其中包含添加成功消息
        } else {
            return R.error("添加失败");                  //否则，返回一个表示成功的R对象，其中包含删除失败消息
        }
    }

    //根据歌单ID查询歌单歌曲信息
    @Override
    public R listSongOfSongId(Integer songListId) {
        QueryWrapper<ListSong> queryWrapper = new QueryWrapper<>();                   //创建了一个QueryWrapper<ListSong>对象，用于构建查询条件
        queryWrapper.eq("song_list_id",songListId);                           //将songListId参数与歌单ID字段进行比较，查询匹配的歌单歌曲信息
        return R.success("查询成功", listSongMapper.selectList(queryWrapper)); //返回一个成功的R对象，其中的成功消息是 “查询成功”，查询结果是通过调用listSongMapper.selectList(queryWrapper)方法来查询满足条件的歌单歌曲列表
    }

}
